package com.leyou.search.pojo;

import lombok.Data;
import org.springframework.boot.test.autoconfigure.filter.TypeExcludeFilters;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Map;
import java.util.Set;

/**
 * 一个Goods对象 对应 es中的一条文档
 */
//indexName 对应索引库的名字,type 对应类型，固定为docs，

@Data
@Document(indexName = "goods",type = "docs",shards = 1,replicas = 1)
public class Goods {

    /**
     * spuid
     */
    @Id //表示当前列对应唯一标识id，能够唯一标识一条文档记录
    @Field(type = FieldType.Keyword) //@Field 标识当前属性的索引类型
    private Long id;

    /**
     * 促销信息，不参与搜索,不需要放入倒排索引，不需要分词
     */
    @Field(type = FieldType.Keyword,index = false)
    private String subTitle;

    /**
     * sku的集合，json字符串，用来给用户看，不参与搜索
     * 不需要放入倒排索引，不需要分词
     */
    @Field(type = FieldType.Keyword,index = false)
    private String skus;
    /**
     * 聚合字段，包含分类名字，品牌名字，spu的名字
     * 参与关键词的检索
     * 需要分词，选择分词器ik_max_word
     */
    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String all;

    private Long categoryId;

    private Long brandId;
    /**
     * 创建时间的毫秒值
     */
    private Long createTime;
    /**
     * 不重复的价格内容 [1999,2999]
     */
    private Set<Long> price;
    /**
     * 规格参数，key -规格参数名字  val-规格参数值
     * 假设内容是 {"内存","8G"}
     * es在处理map结构的时候会生成新的列，
     * 新的列名字 ： specs.内存   内容：就是val的内容 8G
     */

    private Map<String,Object> specs;

}
